草庐IT

c++ - QMap 和 std::unique_ptr

全部标签

c++ - std::iterator_traits libstdc++ 和 libc++ 之间的分歧

给定:structIter{usingvalue_type=int;usingdifference_type=int;usingreference=int;usingpointer=int;usingiterator_category=int;};以下代码适用于libstc++,但无法针对libc++5.0.0进行编译:#include#includestatic_assert(std::is_same::iterator_category,Iter::iterator_category>::value,"");出现错误:error:nomembernamed'iterator_cat

c++ - 遗留 c++ 代码不包含 std::prefix

我正在使用g++4.4.7编译一段非常古老的遗留代码。关于这段代码,我真正知道的是它是在Irix/Sun系统上开发的,这意味着它具有MIPS体系结构。我在使用这段代码时发现的一件相当奇怪的事情是,它有时会调用像endl和set_new_handler这样的函数而没有std::前缀。显然,这会导致编译错误。由于我假设这段代码有时会在某台机器上编译,因此我对盲目添加std::前缀以使其编译有点谨慎,因为它可能会改变行为.那么,是否有一些旧的非ISO编译器允许这段代码编译?或者是否有某种标志可以传递给gcc以允许这段代码工作? 最佳答案

c++ - 计算机总是按照2的补码法来表示负数吗?

这个问题在这里已经有了答案:Signmagnitude,One'scomplement,Two'sComplement(1个回答)Arethereanynon-twos-complementimplementationsofC?(2个答案)Whynotenforce2'scomplementinC++?(4个答案)Isone'scomplementareal-worldissue,orjustahistoricalone?(9个回答)SignedMagnitudeand1'sComplement(1个回答)关闭5年前。请查看以下代码并帮助我理解它inta=1;intb=~1;print

c++ - 具有自动超频功能的多核处理器上的准确 C/C++ 时钟?

我研究了几个主题,试图获得一些关于如何使用C或C++制作可靠时钟的想法。然而,我也看到一些函数使用处理器的滴答声和每秒滴答声来计算最终结果,我认为这可能是像我这样的自动超频CPU上的问题。我也看到其中一个过一段时间就重置了,所以不是很可靠。我们的想法是制作一个(最好是跨平台的)时钟,就像游戏中的时钟一样,精度优于一秒,以便能够将“当前session”中耗时与保存的时间相加在程序结束时。这将计算在没有游戏时钟的主机游戏上花费的时间,并且从长远来看可能会将其集成到实际的PC游戏中。它应该能够在不占用太多或全部CPU时间(或多核CPU的单核时间)的情况下运行,因为将所有这些资源仅用于时钟是非

c++ - 从 std::aligned_union_t 获取指向包含对象的指针

我想使用placement-new在std::aligned_union_t中构造一个任意类型的对象。一旦构造成功,我希望能够取回指向构造对象的指针,而不用单独存储它。通过简单地reinterpret_cast'ingstd::aligned_union_t这样做是否合法,只要我确保将其转换为构造的原始类型?下面的示例代码是否合法?MyStruct是否应该满足任何类型特征要求?例如,它必须是POD吗?#include#include#include#includestructMyStruct{intvalue=0;};constexprsize_tc_alignedUnionSize=

c++ - 保护某些包含位置

我正在构建一种可以编译为C或C++的小语言,我还没有决定,但是我遇到了关于#include的两难选择。关键字。我的语言将带有一个标准库,该库将被合并到该语言中,并且可以像C或C++一样使用标准库进行访问,例如#include.我的编译器可以自动区分用户包含和标准库包含,但我的问题在于GCC编译器如何使用-I旗帜。我们以Java为例。默认包(文件夹)之一称为java.util.如果我尝试创建自己的名为java.util的文件夹在我的项目中,出现错误:Thepackagejava.utilconflictswithapackageaccessiblefromanothermodule:ja

c++ - 在 gTest 中模拟 FreeRTOS 函数

对于一个项目,我在嵌入式系统上用C++实现了一个组件,该组件通过FreeRTOS队列获取传感器数据并将它们处理成一个FreeRTOS任务。由于硬件尚未到达和质量原因(TDD),我想模拟freeRTOS功能并使用它们来模拟我的组件行为。先谢谢你了。 最佳答案 所以我通过结合来自网站的不同答案设法解决了我的问题:HowtousegoogletestforC++torunthroughcombinationsofdata&CangmockbeusedforstubbingCfunctions?.我的答案有点大,但是如果你想使用它,你可以简

c++ - std::allocate_shared,允许从自定义分配器和单次分配中分配共享指针引用计数

Makeshared使用引用计数和对象的单一分配提高性能,是否可以将自定义分配器与std::allocate_shared一起使用并且仍然有一个分配,根据我写的测试代码它没有发生:sample我知道boost::intrusive,但它有额外的代码需要编写并且可能出错 最佳答案 在一些调试的帮助下发现std::allocate_shared做了预期的事情,它允许你只为你的对象和引用计数器进行一次分配。下面是更正后的代码:allocateshared此处operatornew对std::make_shared和std::allocat

使用 unique_ptr 包含 char 数组的 C++ 对象

我正在寻找一种方法来使用unique_ptr来分配一个结构,该结构包含一个char数组,其中包含动态设置的字节数以支持不同类型的消息。假设:structMyMessage{uint32_tid;uint32_tdata_size;chardata[4];};如何将下面的send_message()转换为使用智能指针?voidsend_message(void*data,constsize_tdata_size){constautomessage_size=sizeof(MyMessage)-4+data_size;constautomsg=reinterpret_cast(newcha

c++ - std::string_view 在传递给另一个采用 std::string 的函数时的优点

我有以下辅助函数,它接受一个字符串View并在unordered_map中返回一个查找:intScanner::getOpCount(std::string_viewop){autoitr=Parser::opTable.find(op);}//inanotherfile:conststaticstd::unordered_mapopTable;这不会编译,因为find需要一个字符串参数,所以我找到的唯一解决方案(如果我错了请纠正我)是将op包装为字符串{操作}。然而,让我担心的是std::string_view是为了简化字符串传递,但是如果我必须从它构造一个字符串而不考虑函数体,那么